package org.x.user.dto;

import lombok.Data;
import java.net.URL;
import jakarta.validation.constraints.NotBlank;
import io.swagger.v3.oas.annotations.media.Schema;

/**
 * 菜单管理入参实体
 *
 * @author 夏包包
 * @date 2025-03-08 13:39:03
 */
@Data
public class MenuDTO {

    /**
     * 菜单ID:必填项，用于删除和更新菜单
     */
    @NotBlank(groups = { DeleteGroup.class, UpdateGroup.class }, message = "菜单ID不能为空")
    @Schema(description = "菜单ID:必填项，用于删除和更新菜单")
    private String menuId;

    /**
     * 菜单名称:必填项，用于新增菜单
     */
    @NotBlank(groups = { CreateGroup.class }, message = "菜单名称不能为空")
    @Schema(description = "菜单名称:必填项，用于新增菜单")
    private String menuName;

    /**
     * 父菜单ID:可选项，用于新增和更新菜单
     */
    @Schema(description = "父菜单ID:可选项，用于新增和更新菜单")
    private String parentId;

    /**
     * 菜单URL:可选项，用于新增和更新菜单
     */
    @Schema(description = "菜单URL:可选项，用于新增和更新菜单")
    private String menuUrl;

    /**
     * 菜单描述:可选项，用于新增和更新菜单
     */
    @Schema(description = "菜单描述:可选项，用于新增和更新菜单")
    private String menuDesc;

    /**
     * 租户ID:可选项，用于新增和更新菜单
     */
    @Schema(description = "租户ID:可选项，用于新增和更新菜单")
    private String tenantId;

    /**
     * 菜单类型:可选项，用于新增和更新菜单
     */
    @Schema(description = "菜单类型:可选项，用于新增和更新菜单")
    private String menuType;

    /**
     * 前端路由路径:可选项，用于新增和更新菜单
     */
    @Schema(description = "前端路由路径:可选项，用于新增和更新菜单")
    private String path;

    /**
     * 前端组件:可选项，用于新增和更新菜单
     */
    @Schema(description = "前端组件:可选项，用于新增和更新菜单")
    private String component;

    /**
     * 菜单图标:可选项，用于新增和更新菜单
     */
    @Schema(description = "菜单图标:可选项，用于新增和更新菜单")
    private String icon;

    /**
     * 关联权限:可选项，用于新增和更新菜单
     */
    @Schema(description = "关联权限:可选项，用于新增和更新菜单")
    private String permId;

    /**
     * 排序:可选项，用于新增和更新菜单
     */
    @Schema(description = "排序:可选项，用于新增和更新菜单")
    private Integer sort;

    /**
     * 是否隐藏:可选项，用于新增和更新菜单
     */
    @Schema(description = "是否隐藏:可选项，用于新增和更新菜单")
    private Boolean hidden;
}
